using System;
using Gtk;

public partial class MainWindow : Gtk.Window
{
	public int operacion = 0;     //que se quiere hacer (+ = 1, - = 2, * = 3, / = 4) 
	public bool pendiente = false;    // si se aprieta un operando pasa a true.
	public bool separador_decimal = false;   //si se aprieta el punto pasa a true
	public double primer_numero, segundo_numero, resultado;
	/* si operacion=0 y se aprieta algún operando el valor de caja_texto  pasa a
	primer_numero, cuando se aprieta el igual el valor de Resultado pasa a
	segundo_numero y el resultado de la operación a la variable resultado */
	public MainWindow () : base(Gtk.WindowType.Toplevel)
	{
		Build ();
	}

	protected void OnDeleteEvent (object sender, DeleteEventArgs a)
	{
		Application.Quit ();
		a.RetVal = true;
	}
/*	
	protected virtual void B7_Clicked (object sender, System.EventArgs e){
		entry.Text = entry.Text + "7";
	}

	protected virtual void Button_Clicked (object sender, System.EventArgs e){
		entry.Text = entry.Text + (sender as Button).Label;
	}
*/
	protected virtual void Button_Clicked (object sender, System.EventArgs e){
		if(pendiente)
		{
			primer_numero = double.Parse(entry.Text);
			pendiente = false;
			entry.Text = "";
		}
		entry.Text = entry.Text + (sender as Button).Label; 
	}
	
	protected virtual void BCero (object sender, System.EventArgs e){
		if(pendiente){
			primer_numero = double.Parse(entry.Text);
			pendiente = false;
			entry.Text = "0,";
			separador_decimal = true;
		}
		else{
			if (entry.Text == ""){
				entry.Text = "0,";
				separador_decimal = true;
			}
			else                       
				entry.Text = entry.Text + "0";
		}
	}
	
	protected virtual void operacion_Clicked (object sender, System.EventArgs e){
		if (entry.Text != "")
		{
			pendiente = true;
			if ((sender as Button).Name == "BMas") operacion = 1;
			if ((sender as Button).Name == "BMenos") operacion = 2;
			if ((sender as Button).Name == "BMult") operacion = 3;
			if ((sender as Button).Name == "BDiv") operacion = 4;
			separador_decimal = false;
		} 
	}
	
	protected virtual void BPunto_Clicked (object sender, System.EventArgs e){
		if (!separador_decimal){
			if(pendiente){
				primer_numero = double.Parse(entry.Text);
				pendiente = false;
				entry.Text = "0,";
			}
			else{
				if (entry.Text == "")  
					entry.Text = "0,";
				else                       
					entry.Text = entry.Text + ",";
			}
			separador_decimal = true;
		} 
	}
	
	protected virtual void BIgual_Clicked (object sender, System.EventArgs e){ 
		if ( (operacion >=1) && (operacion <=4) ){
			segundo_numero = double.Parse(entry.Text);
			switch(operacion){
				case 1: resultado = primer_numero + segundo_numero; break;
				case 2: resultado = primer_numero - segundo_numero; break;
				case 3: resultado = primer_numero * segundo_numero; break;
				case 4: resultado = primer_numero / segundo_numero; break;
			}
			entry.Text = Convert.ToString(resultado);
			separador_decimal = false;
		}
	}
	
}